home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 26 / AMIGAplus Sonderheft 26 (2000)(Falke)(DE)(Track 1 of 2)[!].iso / Tools / Packer / xfd / Developer / include / Oberon / XFDmaster.mod
Text File  |  1999-03-29  |  5KB  |  172 lines

  1. (*
  2. (* Copyright © 1994 by Georg Hörmann
  3. ** All Rights Reserved
  4. **
  5. ** Amiga Oberon Interface Module:
  6. ** $VER: XFDmaster.mod 34.1 (14.05.95)
  7. ** converted from orginal includes by Bert Jahn
  8. ** Copyright © 1995 by Bert Jahn
  9. **
  10. ** Only the for "lib-using" needed types & constants are exported
  11. ** if you want to write a sublib (make this sense in Oberon ??) you have to
  12. ** change this file and export all you need
  13. **
  14. ** 02.03.95 initial
  15. ** 14.05.95 new type "SpecialPtr" (bj)
  16. *)
  17. *)
  18.  
  19. MODULE XFDmaster;
  20.  
  21. IMPORT
  22.   e * := Exec;
  23.  
  24. CONST
  25.   xfdmasterName  * = "xfdmaster.library";
  26.   includeVersion * = 34;
  27.   maxSpecialLen  * = 18;
  28.  
  29. TYPE
  30.   BufferInfoPtr    * = UNTRACED POINTER TO BufferInfo;
  31.   SegmentInfoPtr   * = UNTRACED POINTER TO SegmentInfo;
  32.   ForemanPtr         = UNTRACED POINTER TO Foreman;
  33.   SlavePtr           = UNTRACED POINTER TO Slave;
  34.   XFDmasterBasePtr   = UNTRACED POINTER TO XFDmasterBase;
  35.   SpecialPtr       * = UNTRACED POINTER TO ARRAY maxSpecialLen OF CHAR;
  36.  
  37. (* Buffer Info *)
  38. TYPE
  39.   BufferInfo * = STRUCT
  40.     sourceBuffer      * : e.APTR;
  41.     sourceBufLen      * : e.ULONG;
  42.     slave               : SlavePtr;
  43.     packerName        - : e.LSTRPTR;
  44.     packerFlags       - : SET;
  45.     error             - : e.UWORD;
  46.     targetBuffer      - : e.APTR;
  47.     targetBufMemType  * : LONGSET;
  48.     targetBufLen      - : e.ULONG;
  49.     targetBufSaveLen  - : e.ULONG;
  50.     decrAddress       - : e.ULONG;
  51.     jmpAddress        - : e.ULONG;
  52.     special           * : SpecialPtr;
  53.   END;
  54.  
  55. (* Segment Info *)
  56. TYPE
  57.   SegmentInfo * = STRUCT
  58.     segList     * : e.BPTR;
  59.     slave         : SlavePtr;
  60.     packerName  - : e.LSTRPTR;
  61.     packerFlags - : SET;
  62.     error       - : e.UWORD;
  63.     special     * : SpecialPtr;
  64.     relMode     * : e.UWORD;
  65.     reserved0     : e.UWORD;
  66.   END;
  67.  
  68. (* Error Codes *)
  69. CONST
  70.   errOk               * = 0;
  71.   errNoMemory         * = 1;
  72.   errNoSlave          * = 2;
  73.   errNotSupported     * = 3;
  74.   errUnknown          * = 4;
  75.   errNoSource         * = 5;
  76.   errWrongPassword    * = 6;
  77.   errBadHunk          * = 7;
  78.   errCorruptedData    * = 8;
  79.   errMissingResource  * = 9;
  80.   errUndefiniedHunk   * = 1000H;
  81.   errNoHunkHeader     * = 1001H;
  82.   errBadExtType       * = 1002H;
  83.   errBufferTruncated  * = 1003H;
  84.   errWrongHunkAmount  * = 1004H;
  85.   errUnsupportedHunk  * = 2000H;
  86.   errBadRelMode       * = 2001H;
  87.  
  88. (* Relocation Modes *)
  89. CONST
  90.   relDefault   * = 0;
  91.   relForceChip * = 1;
  92.   relForceFast * = 2;
  93.  
  94. (* Packer Flags *)
  95. CONST
  96.   reloc    * = 0;
  97.   addr     * = 1;
  98.   data     * = 2;
  99.   password * = 4;
  100.   relmode  * = 5;
  101.  
  102. (* Forman *)
  103. TYPE
  104.   Foreman = STRUCT
  105.     security   : e.ULONG;
  106.     id         : e.ULONG;
  107.     version    : e.UWORD;
  108.     reserved   : e.UWORD;
  109.     next       : ForemanPtr;
  110.     segList    : e.BPTR;
  111.     firstSlave : SlavePtr;
  112.   END;
  113. CONST
  114.   id       = 58464446H;
  115.   fVersion = 1;
  116.  
  117. (* Slave *)
  118. TYPE
  119.   Slave = STRUCT
  120.     next            : SlavePtr;
  121.     version         : e.UWORD;
  122.     masterVersion   : e.UWORD;
  123.     packerName      : e.LSTRPTR;
  124.     maxSpecialLen   : e.UWORD;
  125.     recogBuffer     : e.PROC;
  126.     decrunchBuffer  : e.PROC;
  127.     recogSegment    : e.PROC;
  128.     decrunchSegment : e.PROC;
  129.   END;
  130. CONST
  131.   sVersion = 1;
  132.  
  133. (* Library Base *)
  134. TYPE
  135.   XFDmasterBase = STRUCT (libNode : e.Library)
  136.     segList      : e.BPTR;
  137.     dosBase      : e.LibraryPtr;
  138.     firstSlave   : SlavePtr;
  139.     firstForeman : ForemanPtr;
  140.   END;
  141.  
  142.  
  143. (* $StackChk- $RangeChk- $NilChk- $OvflChk- $ReturnChk- $CaseChk- *)
  144.  
  145. VAR
  146.   base - : XFDmasterBasePtr;
  147.  
  148. PROCEDURE AllocBufferInfo      *{base,-30}()                                 : BufferInfoPtr;
  149. PROCEDURE FreeBufferInfo       *{base,-36}(bufferinfo  {9}: BufferInfoPtr);
  150. PROCEDURE AllocSegmentInfo     *{base,-42}()                                 : SegmentInfoPtr;
  151. PROCEDURE FreeSegmentInfo      *{base,-48}(segmentinfo {9}: SegmentInfoPtr);
  152. PROCEDURE RecogBuffer          *{base,-54}(bufferinfo  {8}: BufferInfoPtr)   : BOOLEAN;
  153. PROCEDURE DecrunchBuffer       *{base,-60}(bufferinfo  {8}: BufferInfoPtr)   : BOOLEAN;
  154. PROCEDURE RecogSegment         *{base,-66}(segmentinfo {8}: SegmentInfoPtr)  : BOOLEAN;
  155. PROCEDURE DecrunchSegment      *{base,-72}(segmentinfo {8}: SegmentInfoPtr)  : BOOLEAN;
  156. PROCEDURE GetErrorText         *{base,-78}(error       {0}: e.UWORD)         : e.LSTRPTR;
  157. PROCEDURE TestHunkStructure    *{base,-84}(length      {0}: e.ULONG;
  158.                                            buffer      {8}: e.APTR)          : BOOLEAN;
  159. PROCEDURE TestHunkStructureNew *{base,-90}(length      {0}: e.ULONG;
  160.                                            buffer      {8}: e.APTR)          : e.UWORD;
  161. PROCEDURE Relocate             *{base,-96}(length      {0}: e.ULONG;
  162.                                            mode        {1}: e.UWORD;
  163.                                            buffer      {8}: e.APTR;
  164.                                            VAR result  {9}: e.BPTR)          : e.UWORD;
  165.  
  166. BEGIN
  167.   base := e.OpenLibrary(xfdmasterName,includeVersion);
  168. CLOSE
  169.   IF base # NIL THEN e.CloseLibrary(base); END;
  170. END XFDmaster.
  171.  
  172.